#include <bits/stdc++.h>
using namespace std;
const int maxn=2e3+10,mx=1e6+10;
typedef pair<int,int> pii;
int a[maxn],n,tot=0,cnt[mx];
pii ans[maxn];
int s;
bool dfs(int x) {
    int i=s;
    for(;i>=1;i--) {
        if (cnt[a[i]]) {
            if (a[i] >= x) return false;
            if (a[i] < x) break;
        }
    }
    if(!i) return true;
    s=i-1;
    cnt[a[i]]--;
    if(cnt[x-a[i]]){
        ans[++tot].first=a[i],ans[tot].second=x-a[i];
        cnt[x-a[i]]--;
        bool res=dfs(a[i]);
        cnt[a[i]]++;
        cnt[x-a[i]]++;
        return res;
    }
    else{
        cnt[a[i]]++;
        return false;
    }
}
void solve(){
    scanf("%d",&n);
    n=2*n;
    bool res;
    for(int i=1;i<=n;i++) {
        scanf("%d", &a[i]);
        cnt[a[i]]++;
    }
    sort(a+1,a+n+1);
    cnt[a[n]]--;
    for(int i=1;i<n;i++){
        tot=0,s=n-1;
        ans[++tot].first=a[n],ans[tot].second=a[i];
        cnt[a[i]]--;
        res=dfs(a[n]);
        if(res) break;
        cnt[a[i]]++;
    }
    if(res){
        printf("YES\n%d\n",ans[1].first+ans[1].second);
        for(int i=1;i<=tot;i++) printf("%d %d\n",ans[i].first,ans[i].second);
    }
    else printf("NO\n");
    for(int i=1;i<=n;i++) cnt[a[i]]=0;
}
int main(){
    int t;
    scanf("%d",&t);
    while(t--) solve();
    return 0;
}